package proxy.v2;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;

public class ProxyTest {
    /**
     * JDK动态代理的思维模式与之前的一般模式是一样的，
     * 也是面向接口进行编码，
     * 创建代理类将具体类隐藏解耦，
     * 不同之处在于代理类的创建时机不同，
     * 动态代理需要在运行时因需实时创建。
     * @param args
     */
    public static void main(String[] args) {
        Iuser user = new UserImpl();
        InvocationHandler h = new DynamicProxy(user);
        Iuser proxy = (Iuser) Proxy.newProxyInstance(Iuser.class.getClassLoader(), new Class[]{Iuser.class}, h);
        proxy.eat("苹果");
    }
}